有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

线程“main”java中出现异常。lang.NoClassDefFoundError在我的测试中出现错误

我知道这个问题已经问过很多次了,但我想不出来(

我有一个大项目,结构如下:

Project - build
        - Config
        - src
        - tst
        - build.xml
        - webapp
        - eclipse-bin

tst/com/myspace/gateway/content/restlet/SanityTest下有一个java文件。JAVA 在java文件中:

package com.myspace.gateway.content.restlet;
...
public class SanityTest extends ContentGatewayRestletResourceTestCase {
...
public static void main() {
}
}

在整个项目编译之后,SanityTest的类文件正在构建/private/classes/tests/com/myspace/gateway/content/restlet/SanityTest。阶级

我进入build/private/classes/tests并运行了“java-cp.com.myspace.gateway.content.restlet.SanityTest”,但出现了NoClassDefFound错误

请帮帮我

附言: 堆栈跟踪:

Exception in thread "main" java.lang.NoClassDefFoundError: com/myspace/gateway/content/ContentGatewayTestCase
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Caused by: java.lang.ClassNotFoundException:         com.myspace.gateway.content.ContentGatewayTestCase
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 24 more
Could not find the main class: com.myspace.gateway.content.restlet.SanityTest.  Program will exit.

共 (1) 个答案

  1. # 1 楼答案

    你跑了

    java -cp . com/myspace/gateway/content/restlet/SanityTest
    

    你应该跑:

    java -cp . com.myspace.gateway.content.restlet.SanityTest
    

    阅读此问答;A有关更多详细信息:


    更新

    根据stacktrace,问题是Java找不到ContentGatewayTestCase类。据推测,这是SanityTest类所依赖的一个类。然而,源代码片段显示SanityTest扩展了ContentGatewayRestletResourceTestCase。您需要确定ContentGatewayTestCase依赖项是否正确:

    • 如果是,则相应的“.class”文件需要与“SanityTest.class”文件位于同一目录中

    • 无论哪种方式,您都可能在编译代码的方式上有问题